/*

 * 
 * Datei: Finanzen.java                     Autor: Stive Hogmeni

 * Datum: 10.12.11                          Version: 1.2
 * 
 */
package bestellungsverwaltung;

import java.io.Serializable;

public class Finanzen implements Serializable
{

  /**
   * 
   */
  private static final long serialVersionUID = 1L;

  /* Definition der Attribute */

  double Kontostand;
  double druckkosten;
  int druckanzahl;

  int Anzahl;
  int Id;


  /* Standart Konstruktor */
  public Finanzen ()
  {
    this.Kontostand = 0.0;
    this.druckkosten = 0.5;
    this.Id = 0;
    this.druckanzahl = 0;
  }


  /* Paramater Konstruktor */
  public Finanzen (int id, double i)
  {
    this.Kontostand = i;
    this.Id = id;
  }


  /**
   * 
   * @return der Kontostand
   */
  public double gibKontostand ()
  {

    return Kontostand;
  }


  /**
   * 
   * @return der ID
   */
  public int gibId ()
  {

    return Id;
  }


  /**
   * 
   * @param ID
   * 
   */
  public void setzeId (int id)
  {
    this.Id = id;
  }


  /**
   * 
   * @return die Anzahl von Seite ,die der Benutzer drucken darf
   */
  public int gibAnzahl ()
  {
    gibdrucken_anzahl (Kontostand);
    return Anzahl;
  }


  /**
   * 
   * Der Konto wird geladen
   * 
   * @param der
   *          Betrag
   * 
   */
  public void setzeKontostand (double zahl)
  {
    Kontostand = zahl;
  }


  /**
   * 
   * der Konto wird mit diesem Betrag erhoeht
   * 
   * @param der
   *          zu erhoehen Betrag
   * 
   * 
   */
  public void Kontolerhoehen (double betrag)
  {

    this.Kontostand += betrag;

    // return Kontostand;
  }


  /**
   * 
   * @param Autor
   *          des Mediums
   * 
   */
  // public void aktuelkontostand (double kt)
  // {
  //
  // this.Kontostand = Kontostand + kt;
  //
  // }

  /**
   * die Kosten von Ausdrucke wird in Konto des Benutzers abgebucht
   * 
   * @param Anzahl
   *          der Seite zu drucken
   * 
   */
  public void gibdrucken (int i)
  {
    double d = i * 0.5;

    if (d <= gibKontostand ())
    {
     
      Kontoabbuchung (d);

    }

    if (d > gibKontostand ())
    {
      
      Kontoabbuchung (gibKontostand ());

    }
  }


  /**
   * 
   * @param die
   *          abzubuchende Anzahl
   * 
   */
  public void Kontoabbuchung (double d)
  {
    System.out.println ("in Konto");
    Kontostand = gibKontostand () - d;

  }


  /**
   * gibt true zurueck ,wenn der Kontostand null ist
   * 
   * @return ein bool wert
   */
  public boolean Istkontostandunterzero ()
  {

    if (this.Kontostand <= 0)

      return true;
    else
      return false;

  }


  /**
   * gibt die Max. Anzahl zu drucken zurueck
   * 
   * @return der Anzahl
   */
  public int gibdrucken_anzahl (double d)
  {
    this.Anzahl = (int) (d / this.druckkosten);

    return Anzahl;

  }

}